The use of distributed computer systems has been gaining mass appeal over the last few years. The need for enterprises to more effectively use corporate resources and the desire to locate employees at various remote locations from corporate headquarters, pose challenges for most system administrators. In these distributed network systems, the need to share data between various departments and project groups is paramount. Changes in computer interconnect technology are creating new possibilities for other computer architecture.
These new high performance devices make it possible to distribute workload among a set of devices that cooperate in a peer level relationship. These devices jointly collaborate to provide services that were once isolated to a single machine. FIG. 1 is a prior art multi-processor computer system comprises a plurality of storage devices (cache) 101A–101C, a plurality of processors 120A–120C, a shared main memory 130 and a plurality of applications 110A–110C. In the prior art system shown in FIG. 1, each processor has its own cache. The cache units are all connected to main memory 130 by way of the network 105. In operation, when any one of applications 110A–110C requires data from either one of the storage units 110A–101C, the application sends a read request to the processor corresponding to the storage unit being accessed.
In the system shown in FIG. 1, whenever a processor requires to read or write a data item, it sends the address of that item to its cache unit. If the required data is present in the cache, it can be accessed immediately by the process unit. Whenever one of the processors updates a data item in its cache unit, the cache generates an update message over the network 105, to the memory 130.
This ensures that the data in main memory 130 is constantly kept updated. Each cache unit continuously monitors the network for any update messages from the other cache units. Whenever a cache detects such a message, it checks to determine whether the updated item is present in the cache and, if so, invalidates it. This prior art method of each cache unit monitoring the bus lines is generally referred to as a snooping protocol.
During an intermediary processing period, updates that occur in one data storage unit may not immediately occur in a corresponding storage unit (e.g., 101A–101C). This means that applications having data spread over one or more of the storage devices will not be able to have updated data available to them during such intermediary processing period.
The lack of storage coherency means that each time any application updates data in one storage unit, other applications will not have updated data during some part of its processing period. In order for the processing of data to proceed in a rational and predictable fashion, the intermediate states of the data must be known to all the applications that share the data. Each application's view of the state of the data should be kept coherent so that the sum of the distributed states will comprise the entire state of the workload at any given time.